Atributos y métodos de clase

  • Atributos: Hacen referencia a las variables internas de la clase.
  • Métodos: Hacen referencia a las funciones internas de la clase.

In [1]:
class Galleta:
    pass

una_galleta = Galleta()

Definición de atributos dinámicos en los objetos


In [2]:
una_galleta.sabor = "Salado"

In [3]:
una_galleta.color = "Marrón"

In [5]:
print("El sabor de esta galleta es",una_galleta.sabor)


El sabor de esta galleta es Salado

Definición de atributos en la clase


In [7]:
class Galleta:
    chocolate = False

g = Galleta()
g.chocolate


Out[7]:
False

In [8]:
g.chocolate = True
g.chocolate


Out[8]:
True

Método init()

Se llama automáticamente al crear una instancia de clase.


In [9]:
class Galleta():
    chocolate = False
    def __init__(self):
        print("Se acaba de crear una galleta.")
g = Galleta()


Se acaba de crear una galleta.

Métodos y la palabra self

Self sirve para hacer referencia a los métodos y atributos base de una clase dentro de sus propios métodos.


In [14]:
class Galleta():
    chocolate = False
    
    def __init__(self):
        print("Se acaba de crear una galleta.")
    
    def chocolatear(self):
        self.chocolate = True
        
    def tiene_chocolate(self):
        if (self.chocolate):
            print("Soy una galleta chocolateada :-D")
        else:
            print("Soy una galleta sin chocolate :-(")
    
g = Galleta()
g.tiene_chocolate()
g.chocolatear()
g.tiene_chocolate()


Se acaba de crear una galleta.
Soy una galleta sin chocolate :-(
Soy una galleta chocolateada :-D

Parámetros en el init (argumentos al instanciar)


In [21]:
class Galleta():
    chocolate = False
    
    def __init__(self, sabor, forma):
        self.sabor = sabor
        self.forma = forma
        print("Se acaba de crear una galleta {} y {}".format(sabor,forma))
    
    def chocolatear(self):
        self.chocolate = True
        
    def tiene_chocolate(self):
        if (self.chocolate):
            print("Soy una galleta chocolateada :-D")
        else:
            print("Soy una galleta sin chocolate :-(")

In [19]:
g = Galleta("salada","cuadrada")


Se acaba de crear una galleta salada y cuadrada

Parámetros con valores por defecto en el init()


In [20]:
g = Galleta()


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-20-bfd19da23fef> in <module>()
----> 1 g = Galleta()

TypeError: __init__() missing 2 required positional arguments: 'sabor' and 'color'

In [24]:
class Galleta():
    chocolate = False
    
    def __init__(self, sabor=None, forma=None):
        self.sabor = sabor
        self.forma = forma
        if sabor is not None and forma is not None:
            print("Se acaba de crear una galleta {} y {}".format(sabor,forma))
    
    def chocolatear(self):
        self.chocolate = True
        
    def tiene_chocolate(self):
        if (self.chocolate):
            print("Soy una galleta chocolateada :-D")
        else:
            print("Soy una galleta sin chocolate :-(")

In [26]:
g = Galleta("salada","cuadrada")


Se acaba de crear una galleta salada y cuadrada